package cn.tedu._04mybatis.mapper;

import cn.tedu._04mybatis.pojo.entity.Weibo;
import cn.tedu._04mybatis.pojo.vo.WeiboVO1;
import cn.tedu._04mybatis.pojo.vo.WeiboVO2;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface WeiboMapper {
    /**
     * 1.微博表中插入1条数据;
     */
    @Insert("INSERT INTO weibo(content,created,user_id) VALUES (#{content},#{created},#{userId})")
    int insertWeibo(Weibo weibo);

    /**
     * 2.根据微博ID删除指定微博;
     */
    @Delete("DELETE FROM weibo WHERE id=#{id}")
    int deleteWeiboById(Long id);

    /**
     * 3.根据微博ID修改指定微博信息;
     *   UPDATE weibo SET content=#{},created=#{},user_id=#{} WHERE id=#{id}
     */
    @Update("UPDATE weibo SET content=#{content},created=#{created},user_id=#{userId} WHERE id=#{id}")
    int updateWeiboById(Weibo weibo);

    /**
     * 4.单条数据全字段查询:查询指定微博的所有字段的数据;
     *   SELECT id,content,created,user_id FROM weibo WHERE id=#{id}
     */
    @Select("SELECT id,content,created,user_id userId FROM weibo WHERE id=#{id}")
    Weibo selectWeiboById(Long id);

    /**
     * 5.多条数据全字段查询:查询指定用户发的所有微博信息;
     */
    @Select("SELECT id,content,created,user_id userId FROM weibo WHERE user_id=#{uid}")
    List<Weibo> selectWeiboByUserId(Long uid);

    /**
     * 6.单条数据部分字段查询:查询指定微博的微博内容和发布时间;
     */
    @Select("SELECT content, created FROM weibo WHERE id=#{id}")
    WeiboVO1 selectWeiboVO1ById(Long id);

    /**
     * 7.多条数据部分字段查询
     *   查询指定用户[用户ID]发的所有微博,要求显示: 用户昵称,微博内容,发布时间;
     */
    @Select("SELECT u.nickname,w.content,w.created FROM user u JOIN weibo w ON u.id=w.user_id WHERE u.id=#{uid}")
    List<WeiboVO2> selectWeiboVO2ByUserId(Long uid);
}











